Я хочу удалить ветку как локально, так и удаленно. Неудачные попытки удалить удаленную ветку $ git branch -d пульты / происхождение / исправление ошибка: ветка "удаленные / происхождение / исправление" не найдена. $ git branch -d происхождение / исправление ошибка: ветка origin / bugfix не найдена. $ git branch -rd origin / bugfix Удален источник / исправление удаленной ветки (было 2a14ef7). $ git push Все актуально $ git pull С github.com:gituser/gitproject * [новая ветка] bugfix -> origin / bugfix Уже актуально. Что мне следует сделать по-другому, чтобы успешно удалить ветку remotes / origin / bugfix как локально, так и удаленно?
2020-12-07 13:13:17
1 2 следующий Управляющее резюме $ git push -d <имя_пульта> <имя_ответки> $ git branch -d <имя_ответки> Обратите внимание, что в большинстве случаев удаленное имя - origin. В таком случае вам придется использовать такую команду. $ git push -d origin <имя_ответки> Удалить локальную ветвь Чтобы удалить локальную ветку, используйте одно из следующих действий: $ git branch -d имя_ветки $ git branch -D имя_ветки Примечание. Параметр -d является псевдонимом для --delete, который удаляет ветвь только в том случае, если она уже была полностью объединена с ветвью восходящего потока. Вы также можете использовать -D, который является псевдонимом для --delete --force, который удаляет ветку «независимо от ее объединенного статуса». [Источник: man git-branch] Также обратите внимание, что git branch -d branch_name завершится ошибкой, если вы в настоящее время в ветке, которую хотите удалить. Сообщение начинается с ошибка: не удается удалить ветку "имя_ветки". Если да, сначала переключите в другую ветку, например: git checkout master. Удалить удаленную ветку [Обновлено 8 сентября 2017 г.] Начиная с Git v1.7.0, вы можете удалить удаленную ветку, используя $ git push <имя_удаления> --delete <имя_ответки> что может быть легче запомнить, чем $ git push <имя_пульта>: <имя_ответки> который был добавлен в Git v1.5.0 «для удаления удаленной ветки или тега». Начиная с Git v2.8.0, вы также можете использовать git push с параметром -d в качестве псевдонима для --delete. Таким образом, установленная вами версия Git будет определять, нужно ли вам использовать более простой или более сложный синтаксис. Удалить удаленную ветку [Исходный ответ от 5 января 2010 г.] Из главы 3 Pro Git Скотта Чакона: Удаление удаленных филиалов Предположим, вы закончили работу с удаленной веткой - скажем, вы и ваши соавторы закончили работу над функцией и объединили ее в главную ветку удаленного компьютера (или в любую другую ветку, в которой находится ваша стабильная строка кода). Вы можете удалить удаленную ветку, используя довольно тупой синтаксис git push [remotename]: [branch]. Если вы хотите удалить ветку server-fix с сервера, выполните следующее: $ git push origin: serverfix На git@github.com: schacon / simplegit.git - [удалено] исправление сервера Бум. На вашем сервере больше нет веток. Возможно, вы захотите выслушать эту страницу, потому что вам понадобится эта команда, и вы, вероятно, забудете синтаксис. Чтобы запомнить эту команду, можно вызвать синтаксис git push [remotename] [localbranch]: [remotebranch], который мы рассмотрели немного ранее. Если вы опустите часть [localbranch], то вы, по сути, говорите: «Не принимайте ничего на моей стороне и сделайте это [remotebranch]». Я выпустил git push origin: bugfix, и он отлично сработал. Скотт Чакон был прав - я хочу выслушать эту страницу (или практически собачьим ухом, ответив на этот вопрос в Stack Overflow). Затем вы должны выполнить это на других машинах # Получить изменения со всех пультов и локально удалить # удаленные удаленные ветки / теги и т. д. # --prune выполнит работу: -; git fetch --all --prune распространять изменения. | Ответ Мэтью отлично подходит для удаления удаленных веток, и я также ценю объяснение, но чтобы провести простое различие между двумя командами: Чтобы удалить локальную ветку с вашего компьютера: git branch -d {the_local_branch} (используйте -D вместо того, чтобы принудительно удалить ветку без проверки объединенного статуса) Чтобы удалить удаленную ветку с сервера: git push origin --delete {the_remote_branch} Ссылка: Git: удалить ветку (локальную или удаленную) | Короткие ответы Если вам нужны более подробные объяснения следующих команд, см. Подробные ответы в следующем разделе. Удаление удаленной ветки git push origin --delete# Git версии 1.7.0 или новее git push origin -d # Более короткая версия (Git 1.7.0 или новее) git push origin: # Версии Git старше 1.7.0 Удаление локальной ветки git branch --delete <ветка> git branch -d # Более короткая версия git branch -D # Принудительно удалить не объединенные ветки Удаление локальной ветки удаленного отслеживания git branch --delete --remotes <удаленный> / <ветка> git branch -dr / # Короче git fetch --prune # Удалить несколько устаревших веток удаленного отслеживания git fetch -p # Короче Длинный ответ: нужно удалить три разных ветки! Когда вы имеете дело с удалением веток как локально, так и удаленно, имейте в виду, что задействованы три разные ветки: Местное отделение X. Ветвь удаленного происхождения X. Локальный источник ветки удаленного отслеживания / X, который отслеживает удаленную ветку X. В оригинальном плакате использовались: git branch -rd origin / bugfix Которая удалила только его локальную ветку удаленного отслеживания origin / bugfix, а не фактическое исправление ошибки удаленной ветки в origin. Чтобы удалить эту фактическую удаленную ветку, вам нужно git push origin - удалить ошибку Дополнительные детали В следующих разделах описываются дополнительные сведения, которые следует учитывать при удалении веток удаленного и удаленного отслеживания. Нажатие на удаление удаленных веток также удаляет ветки удаленного отслеживания Обратите внимание, что удаление удаленной ветви X из командной строкииспользование git push также удалит локальную ветку удаленного отслеживания origin / X, поэтому нет необходимости обрезать устаревшую ветку удаленного отслеживания с помощью git fetch --prune или git fetch -p. Впрочем, это не повредит, если вы все равно это сделаете. Вы можете убедиться, что исходная ветка удаленного отслеживания / X также была удалена, выполнив следующее: # Просмотр только веток удаленного отслеживания git branch --remotes git branch -r # Просмотр как строго локальных, так и удаленных веток отслеживания git ветка - все git branch -a Удаление устаревшей локальной ветки удаленного отслеживания origin / X Если вы не удалили удаленную ветку X из командной строки (как указано выше), то ваш локальный репозиторий по-прежнему будет содержать (теперь устаревшую) ветку удаленного отслеживания origin / X. Это может произойти, если, например, вы удалили удаленную ветку напрямую через веб-интерфейс GitHub. Типичный способ удалить эти устаревшие ветки удаленного отслеживания (начиная с Git версии 1.6.6) - просто запустить git fetch с параметром --prune или короче -p. Обратите внимание, что это удаляет все устаревшие локальные ветки удаленного отслеживания для всех удаленных ветвей, которые больше не существуют на удаленном компьютере: git fetch origin --prune git fetch origin -p # Короче Вот соответствующая цитата из примечаний к выпуску 1.6.6 (выделено мной): "git fetch" изучил --all и --multipleoptions, чтобы запускать выборку из множество репозиториев и параметр --prune для удаления удаленного отслеживания ветки, которые стали черствыми. Они делают "git remote update" и "git удаленное удаление "менее необходимо (удаление" удаленного обновить "или" удаленную очистку "). Альтернатива вышеуказанной автоматической обрезке для устаревших веток удаленного отслеживания В качестве альтернативы, вместо того, чтобы обрезать устаревшие локальные ветки удаленного отслеживания с помощью git fetch -p, вы можете избежать дополнительных сетевых операций, просто вручную удалив ветки с флагами --remote или -r: git branch --delete --remotes origin / X git branch -dr origin / X # Короче Смотрите также git-branch (1) Страница руководства. git-fetch (1) Страница руководства. Pro Git § 3.5 Ветвление Git - удаленные ветки. | Шаги по удалению ветки: Для удаления удаленной ветки: git push origin --delete <ваша_ ветка> Удалить локальную ветку можно тремя способами: 1: git branch -D <имя_ответки> 2: git branch --delete --force # То же, что -D 3: git branch --delete # Ошибка при отключении Объясните: хорошо, просто объясните, что здесь происходит! Просто выполните git push origin --delete, чтобы удалить только удаленную ветку, добавьте имя ветки в конце, и это удалит и одновременно отправит ее на удаленный ... Кроме того, git branch -D, который просто удаляет только локальную ветку! ... -D означает --delete --force, который удалит ветку, даже если она не объединена (принудительное удаление), но вы также можете использовать -d, что означает --delete, которая выдает ошибку, соответствующую статусу слияния ветки ... Я также создаю изображение ниже, чтобы показать шаги: | Вы также можете использовать следующее, чтобы удалить удаленную ветку git push --delete origin serverfix Что делает то же самое, что и git push origin: serverfix но может быть легче запомнить. | Совет: при удалении веток с помощью git branch -d # Удаляет локальную ветку или git push origin: # Удаляет удаленную ветку удаляются только ссылки. Несмотря на то, что ветка фактически удалена на удаленном компьютере, ссылки на нее все еще существуют в локальных репозиториях членов вашей команды. Это означает, что для других членов команды удаленные ветки все еще видны, когда они выполняют команду git branch -a. Чтобы решить эту проблему, члены вашей команды могут обрезать удаленные ветки с помощью git remote prune <репозиторий> Обычно это git remote prune origin. | Если вы хотите удалить ветку, сначала сделайте заказ в ветку, отличную от ветки, которую нужно удалить. git checkout other_than_branch_to_be_deleted Удаление локальной ветки: git branch -D branch_to_be_deleted Удаление удаленной ветки: git push origin --delete branch_to_be_deleted | git branch -D <имя- ветки> git branch -D -r origin / <имя-ветки> git push origin: <имя-ветки> | Это просто: просто выполните следующую команду: Чтобы удалить ветку Git как локально, так и удаленно, сначала удалите локальную ветку с помощью этой команды: git branch -d пример (Вот пример - название ветки.) И после этого удалите удаленную ветку с помощью этой команды: git push origin: пример | Все очень просто: Чтобы удалить удаленную ветку git push -d origin <имя-ветки> Или git push origin: <имя-ветки> Чтобы принудительно удалить локальную ветку git branch -D <имя-ветки> | Другой подход: git push --prune origin ВНИМАНИЕ: это приведет к удалению всех удаленных ветвей, которые не существуют локально. Или более подробно, git push --mirror фактически сделает удаленный репозиторий похожим на локальную копию репозитория (локальные заголовки, пульты и теги зеркалируются на удаленном). | В настройках Bash я использую следующее: псевдоним git-shot = "git pushorigin --delete " Тогда вы можете позвонить: git-стрелять ветвью | Удалить локально: Чтобы удалить локальную ветку, вы можете использовать: git branch -d <имя_ответки> Чтобы удалить ветку принудительно, используйте -D вместо -d. git branch -D <имя_ответки> Удалить удаленно: Есть два варианта: git push origin: имя ветки git push origin - удалить имя ветки Я бы посоветовал вам использовать второй способ, так как он более интуитивно понятен. | С января 2013 года GitHub включил кнопку «Удалить ветку» рядом с каждой веткой на вашей странице «Ветви». Соответствующее сообщение в блоге: Создание и удаление веток | Если вы хотите выполнить оба этих шага с помощью одной команды, вы можете создать для нее псевдоним, добавив следующий код в свой ~ / .gitconfig: [псевдоним] rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f" Кроме того, вы можете добавить это в свою глобальную конфигурацию из командной строки, используя git config --global alias.rmbranch \ '! f () {git branch -d $ {1} && git push origin --delete $ {1}; }; f ' ПРИМЕЧАНИЕ. При использовании -d (d в нижнем регистре) ветвь будет удалена только в том случае, если она была объединена. Чтобы выполнить удаление, вам нужно будет использовать -D (верхний регистр D). | Чтобы удалить ветку локально и удаленно Оформить заказ в главную ветку - git checkout master Удалите удаленную ветку - git push origin --delete Удалите вашу локальную ветку - git branch --delete | Вы также можете сделать это с помощью git remote prune origin $ git удаленное начало отсечения Происхождение обрезки URL: git@example.com/yourrepo.git * [обрезано] origin / some-branchs Он обрезает и удаляет ветки удаленного отслеживания из списка git branch -r. | В дополнение к другим ответам я часто использую инструмент git_remote_branch. Это дополнительная установка, но она дает вам удобный способ взаимодействия с удаленными ветвями. В этом случае удалить: grb удалить ветку Я обнаружил, что довольно часто использую команды публикации и отслеживания. | Однострочная команда для удаления как локального, так и удаленного: D = название ветки; git branch -D $ D; git push origin: $ D Или добавьте указанный ниже псевдоним в свой ~ / .gitconfig. Использование: git kill имя-ветки [псевдоним] kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f" | Удаление веток Предположим, наша работа над веткой «контактная форма» завершена и мы уже интегрировали ее в «мастер». Поскольку он нам больше не нужен, мы можем удалить его (локально): $ git branch -d контактная форма И для удаления удаленной ветки: git push origin - удалить контактную форму | Удалить удаленную ветку git push origin: <имя-ветки> Удалить локальную ветку git branch -D <имя-ветки> Удалить шаги локальной ветки: оформить заказ в другой филиал удалить местное отделение | Просто скажите: git branch -d <имя-ветки> git push origin: <имя-ветки> | git push origin --delete <имя ветки> легче запомнить чем git push origin: branchName | Теперь вы можете сделать это с помощью приложения GitHub Desktop. После запуска приложения Щелкните проект, содержащий ветку Переключитесь на ветку, которую хотите удалить В меню «Ветвь» выберите «Отменить публикацию ...», чтобы удалить ветку с серверов GitHub. В меню «Ветвь» выберите «Удалить« имя_ ветки »...», чтобы ветка была удалена с вашего локального компьютера (он же машина, на которой вы в настоящее время работаете) | Удалить локально - (нормально) git branch -d my_branch Если ваша ветка находится в процессе перебазирования / слияния и это не было сделано должным образом, это означает, что вы получите сообщение об ошибке «Выполняется перебазирование / слияние», поэтому в этом случае вы не сможете удалить свою ветку. Так что либо нужно решать ребазинг / слияние. В противном случае вы можете выполнить принудительное удаление, используя, git branch -D my_branch Чтобы удалить в удаленном: git push --delete origin my_branch Вы можете сделать то же самое, используя: git push origin: my_branch # Легко запомнить, оба будут делать то же самое. Графическое представление: | Это не сработает, если у вас есть тег с тем же именем, что и ветка на пульте дистанционного управления: $ git push origin: имя-ветки или-тега ошибка: dst refspec имя-ветки или-тега соответствует более чем одному. ошибка: не удалось отправить некоторые ссылки на 'git@github.com: SomeName / some-repo.git' В этом случае вам нужно указать, что вы хотите удалить ветку, а не тег: git push origin: refs / heads / branch-or-tag-name Точно так же, чтобы удалить тег вместо ветки, вы должны использовать: git push origin: refs / tags / имя-ветки или-тега | Многие другие ответы приведут к ошибкам / предупреждениям. Этот подход относительно надежен, хотя вам все равно может понадобиться git branch -D branch_to_delete, если он, например, не полностью объединен с some_other_branch. git checkout some_other_branch git push origin: branch_to_delete git branch -d branch_to_delete Удаленная обрезка не требуется, если вы удалили удаленную ветку. Он используется только для получения самых последних пультов дистанционного управления, доступных в репозитории, который вы отслеживаете. Я заметил, что git fetch будет добавлять пульты, а не удалять их. Вот пример того, как git remote prune origin действительно что-то делает: Пользователь Аделает шаги, указанные выше. Пользователь B запустит следующие команды, чтобы увидеть самые свежие удаленные ветки: git fetch git удаленное начало отсечения git branch -r | Мне надоело гуглить этот ответ, поэтому я применил аналогичный подход к ответу, который crizCraig опубликовал ранее. Я добавил в свой профиль Bash следующее: function gitdelete () { git push origin - удалить $ 1 git branch -D $ 1 } Затем каждый раз, когда я заканчиваю работу с веткой (например, объединяю ее с мастером), я запускаю в своем терминале следующее: gitdelete имя-ветки ... который затем удаляет my-branch-name как из источника, так и локально. | Перед выполнением git branch --delete <ветка> сначала убедитесь, что вы определили точное имя удаленной ветки, выполнив: git ls-remote Это подскажет вам, что именно вводить для значения . (ветка чувствительна к регистру!) | Использование: git push origin: bugfix # Удаляет удаленную ветку git branch -d bugfix # Необходимо удалить локальную ветку вручную Если вы уверены, что хотите его удалить, запустите git branch -D исправление ошибки Теперь, чтобы очистить удаленные удаленные ветки, запустите git удаленное начало отсечения | 1 2 следующий Весьма активный вопрос. Заработайте 10 репутации, чтобы ответить на этот вопрос. Требование репутации помогает защитить этот вопрос от спама и случаев отсутствия ответов. Не тот ответ, который вы ищете? Просмотрите другие вопросы с меткой git version-control git-branch git-push git-remote или задайте свой вопрос.